1. Field of the Invention
This invention relates generally to computer software, and more specifically to an apparatus and method for interconnecting a plurality of independent software modules.
2. Description of Related Art
Various architectures are well-known for linking together software modules (the term "software module", as used herein, is defined as including objects, functions, routines, procedures, and/or applications). Some of these architectures may be utilized to implement a system for computer-aided musical composition. For example, a number of languages exist which are adapted to musical composition, such as Csound. These languages generally specify particular software modules, along with a list of connections. Graphical programming languages also exist which provide a user with a mechanism for graphically connecting the inputs and outputs of software modules. In the musical field, examples of graphical programming languages are TurboSynth, Patcher, Xmusic, and MAX. For further information on related art in the field of computer-aided musical composition, the following references may be consulted:
(1) Lentczner, M. "Sound Kit--A Sound Manipulator," Proceedings of the 1985 International Computer Music Conference, pp. 141-149, published by Computer Music Association, San Francisco, Calif. 1985; and PA1 (2) Puckett, M. "The Patcher," Proceedings of the 1988 International Computer Music Conference, pp. 420-429, published by Computer Music Association, San Francisco, Calif., 1988. PA1 (1) enhanced communication within a single software application; PA1 (2) enhanced communication between different software applications; PA1 (3) application programs which are capable of running across a network of machines; PA1 (4) enhanced communication between hardware devices; and PA1 (5) enhanced applications and devices which provide a high level of software and hardware interaction.
A major disadvantage of all known prior-art music control software architectures is that they do not allow universal connections between software modules on different machines. Additionally, no prior-art system allows arbitrary "fan-in" (the number of allowable input connections) and "fan-out" (the number of allowable output connections), nor do any of these prior-art systems permit the use of hardware configurations which provide for flexible, adaptable connections between a plurality of individual hardware modules.
Communication between software modules is generally necessary in large systems, such as a system which may be employed to assist in the composition of music. However, the process of communication among a plurality of software modules is often implemented in an inconsistent way. Past approaches have not allowed interacting software modules to reside on different machines, such as on computers, synthesizers, mixers, processors, lighting controllers, etc., even though such a system would greatly facilitate the process of computer-aided musical composition.
It would be desirable to provide a technique for interconnecting a plurality of software modules which provides the following features:
End-users would have a special incentive to use technology which provides the features set forth above, because all hardware and software products would provide complete compatibility from the standpoint of the end-user.
As applied to computer-aided musical composition, the aforementioned features would provide several practical advantages. Many music studios have a large number of electronic and electro-acoustic devices connected together. The studio of the future will require closer integration of these devices. It would be highly desirable to connect all such devices together to form one large network. Consequently, software residing on one network device should be capable of interfacing with the software on other network devices. No currently existing method of software module interconnection provides such a complete level of device integration. However, the present invention meets the aforementioned objectives.